package shopping.domain;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class Cart {
    private Map<String, CartItem> items = new HashMap<>();

    //总计金额
    private double total;

    public Collection<CartItem> getItems() {
        return items.values();
    }

    public void setItems(Map<String, CartItem> items) {
        this.items = items;
    }

    public double getTotal() {
        return total;
    }

    /**
     * 添加购物项功能
     * 添加一个新的购物项之前，先判断有没有
     *      如果有，则改变数量
     *      如果没有，添加到集合
     * 总价格更新
     *
     * @param item  要添加的购物项
     */
    public void addItem(CartItem item){
        //获取商品id
        String pid = item.getProduct().getPid();

        if(items.containsKey(pid)){
            //已经存在，更新数量
            CartItem innerItem = items.get(pid);
            innerItem.setCount(innerItem.getCount() + item.getCount());
        }else{
            //没有，添加
            items.put(pid, item);
        }
        //更新总价格
        total += item.getSubtotal();
    }

    /**
     * 删除购物项
     * @param pid   待删除购物项的商品id
     */
    public void removeItem(String pid){
        //从集合中删除
        CartItem remove = items.remove(pid);
        //更新总价格
        total = (int) (total - remove.getSubtotal());
    }

    /**
     * 清空购物车
     */
    public void clear(){
        items.clear();
        //总价格归0
        total = 0;
    }
}
